Many systems utilize an architecture where requesting entities issue requests for service. Each request is processed using available resources of the system. The system responds to each received request by applying resources to provide the requesting entity with a response or otherwise process the received request. As the number of requests received by the system increases, the system may experience congestion when requests are received by the system and resources are not available to service the requests.
In some systems, the requests may be queued or stored within one or more queues in an effort to efficiently service each request. In other systems, a request may incur an early response message indicating unavailability of service for the request. In still other cases, a request may be dropped silently without any response, thereby allowing the sender to timeout and resubmit the same request.
In cases where requests are queued, the requests remain queued while waiting for resources of the system to become available. This type of architecture is used in many transaction-based systems. Transaction-based systems include a variety of different system types such as, for example, queuing systems, communication systems, information processing systems, and the like. More specific examples of transaction-based systems include, but are not limited to, client-server systems, processor systems, offload processing systems, memory management systems, database systems, telephony systems, and warehouse management systems.